深入學習 LSD-SLAM-1


Posted by Po-Jen on 2017-03-18

前言

SLAM 是近年來很火紅的一個技術,也有不少文章在介紹,不過我很少看到針對一些頂級演算法的深入介紹,所以才想透過這篇文章來開始深入很久以前玩過的LSD SLAM,也跟大家一起學習這個迷人的演算法。建議有興趣的讀者先讀過這篇平易近人的 Visual SLAM 簡介,然後再繼續往下看,會更有感覺!

先放一張 LSD-SLAM 建出來的地圖,讓大家感受一下帥度。

lsd-cool

安裝方式

安裝方式可以到 LSD-SLAM 的 github page 看看,筆者很久以前跑過 Ubuntu 12.04 上面的版本,建議可以看看作者的溫馨提示,比較容易建出好的地圖。

如果想看中文的安裝教學,也可以看看這一篇 LSD-SLAM 編譯過程 (Ubuntu 14.04 + ROS Indigo)

演算法簡介

lsd-algo

從上圖中我們可以看到,LSD-SLAM 演算法的一個特色就在於它不需要計算特徵點,這個特色在 real-time 的應用中滿重要的,畢竟一般影像是以 30 fps
的速率進來,也就是一張影像只能處理 33 ms,要怎麼在這麼短的時間內就處理完一幀,是一個問題。有些計算特徵的演算法雖然厲害(例如 SIFT、ORB),但計算時間太長,佔掉 30 ms 的一大部分,就很難在 real-time 應用中派上用場。

LSD-SLAM的基本想法就是利用所有 pixel 資訊不斷計算目前相機所在的位置,等到目前的位置離前一個 keyframe 足夠遠,就儲存一張新的 keyframe。並且在過程中不斷計算 depth map 形成 point cloud map,也不斷對 map 做 optimization 計算。

如此一來,就可以形成一個完整的 map,整個 map 就是一個巨大的 pose graph,graph 裡面的 vertice 是 keyframe,edge 就是連接 keyframe 的 3D similarity transform。

總結

這篇很簡單地介紹了 LSD-SLAM,算是一個起頭,讓大家對這個演算法有基本的認識,之後我會慢慢深入裡面的細節,也會逐漸變得好玩!

延伸閱讀

  1. 雷鋒網 SLAM 相關文章
  2. 相機位姿估計0:基本原理之如何解PNP問題
  3. SLAM Tutorial@ICRA 2016
  4. 高翔大神的blog
  5. CMU Designing Computer Vision Apps - lecture 19

關於作者:
@pojenlai 演算法工程師,對機器人跟電腦視覺有少許研究,最近在鍛鍊自己的執行力


#ROS #Robotics #SLAM #LSD SLAM









Related Posts

Java Stream intermediate operations are lazily executed

Java Stream intermediate operations are lazily executed

Spring boot系列(三)Hello World

Spring boot系列(三)Hello World

JS30 Day 21 筆記

JS30 Day 21 筆記




Newsletter




Comments